/**
 * @description:  是否为数组
 */
export function isArray(val: any): val is Array<any> {
  return val && Array.isArray(val);
}
/**
 * @description 处理值无数据情况
 * @param {*} callValue 需要处理的值
 * @returns {String}
 * */
export function formatValue(callValue: any) {
  // 如果当前值为数组，使用 / 拼接（根据需求自定义）
  if (isArray(callValue)) return callValue.length ? callValue.join(" / ") : "--";
  return callValue ?? "--";
}

/**
 * @description 根据枚举列表查询当需要的数据（如果指定了 label 和 value 的 key值，会自动识别格式化）
 * @param {String} value 当前单元格值
 * @param {Array} enumData 字典列表
 * @returns {String}
 * */
export function filterEnum(value: any, enumData?: any) {
  let filterData: { [key: string]: any } = {};
  // 判断 enumData 是否为数组
  if (Array.isArray(enumData)) filterData = findItemNested(enumData, value);
  return filterData ? filterData.label : "--";
}

/**
 * @description 递归查找 value 对应的 enum 值
 * */
export function findItemNested(enumData: any, value: any) {
  return enumData.reduce((cur: any, next: any) => {
    if (cur) return cur;
    if (next.value === value) return next;
    if (next.children) return findItemNested(next.children, value);
  }, null);
}

const valid = (value: any) => {
  if (Array.isArray(value) && !value.length) {
    return false;
  } else if (!value && value !== 0 && value !== false) {
    return false;
  }
  return true;
};
// 过滤参数无效字段
export function getValidKey(object: { [key: string]: any }) {
  const data: { [key: string]: any } = {};
  for (const key in object) {
    const value = object[key];
    if (valid(value)) {
      data[key] = value;
    }
  }
  return data;
}

// 表格操作列prop
export const COLUMN_OPERATE_PROP = "operation"
